perm filename COMP.LST[HAL,HE] blob
sn#155556 filedate 1975-04-24 generic text, type T, neo UTF8
PALX 222 04/24/75 12:00:45 PAGE 1
INTOPS PAL[HAL,HE] PAGE 2 DEFS -- standard definitions for HAL runtime routines
44000 2 8 .ERROR You are using (XVARIABLE in two ways!!!
PALX 222 04/24/75 12:00:45 PAGE 2
COMP PAL[HAL,HE] PAGE 1
COMMENT ⊗ VALID 00002 PAGES
C REC PAGE DESCRIPTION
C00001 00001
C00002 00002 File that requires all the compiled files. This is meant to be
C00003 ENDMK
C⊗;
PALX 222 04/24/75 12:00:45 PAGE 3
COMP PAL[HAL,HE] PAGE 2
; File that requires all the compiled files. This is meant to be
;overlaid on top of the interpreter.
044000 . = 44000 ;Beginning of instruction space
.MACRO MAKEOP CNAME, ANAME ;Compiler name, Address name
XX CNAME
.ENDM
.INSRT HALHED.PAL[HAL,HE]
PALX 222 04/24/75 12:00:45 PAGE 4
HALHED PAL[HAL,HE] PAGE 1
COMMENT ⊗ VALID 00005 PAGES
C REC PAGE DESCRIPTION
C00001 00001
C00002 00002 .SBTTL ASSEMBLY FLAGS
C00005 00003 routine calling and defining macros.
C00008 00004 macros for handling tables & blocks
C00012 00005 Graph structure definitions
C00014 ENDMK
C⊗;
PALX 222 04/24/75 12:00:45 PAGE 5
HALHED PAL[HAL,HE] PAGE 2 ASSEMBLY FLAGS
.SBTTL ASSEMBLY FLAGS
;This macro gives the switch SW a default value VAL
.MACRO STSW SW,VAL
.IFNDF SW
SW == VAL ;if do not have a value already, give it one
.ENDC
.ENDM
STSW FLOAT,1 ;0 => no floating point capacity
.IFNDF FLOAT
FLOAT == 1 ;if do not have a value already, give it one
.ENDC
.SBTTL DEFS -- standard definitions for HAL runtime routines
; PROGRAM DEFINITIONS
000004 ERRTRP==4 ;time out and error trap
000010 ILGINS==10 ;illegal instruction
000104 CLKTRP==104 ;clock trap
050000 RUG=50000 ;Restart of RUG
177776 PS=177776 ;processor status word
177560 KBIS=177560 ;keyboard input status
177562 KBIR=177562 ;keyboard input register
177564 KBOS=177564 ;keyboard output status
177566 KBOR=177566 ;keyboard output register
172544 CLKCNT=172544 ;clock counter
172542 CLKSET=172542 ;clock set register
172540 CLKS=172540 ;clock status
000500 STRT11=500 ;starting address of program
000150 IBUF==150 ;start of input buffer from 11
000160 OBUF==160 ;start of output buffer to 11
077776 HCOR=77776 ;highest useable word in core
;REGISTER DEFINITIONS
000007 PC=%7 ;program counter
000006 SP=%6 ;stack pointer
000005 RF==%5 ;Display pointer
000005 R5=%5
000004 R4=%4 ;Saved across procedure calls
000003 R3=%3 ;Saved across procedure calls
000002 R2=%2 ;Saved across procedure calls
000001 R1=%1 ;temp
000000 R0=%0 ;temp
000005 AC5==%5 ;Temp Floating point register
PALX 222 04/24/75 12:00:45 PAGE 6
HALHED PAL[HAL,HE] PAGE 2.1 DEFS -- standard definitions for HAL runtime routines
000004 AC4==%4 ; " " " "
000003 AC3==%3 ; " " " "
000002 AC2==%2 ; " " " "
000001 AC1==%1 ; " " " "
000000 AC0==%0 ; " " " "
;MARK DEFINITIONS
006400 MARK0 == 6400 ;MARK 0
006401 MARK1 == 6401 ;MARK 1
006402 MARK2 == 6402 ;ETC.
006403 MARK3 == 6403
006404 MARK4 == 6404
006405 MARK5 == 6405
;Absolute address initialization
044000 TEMP == . ;Save location counter for a bit.
000244 . = 244 ;Floating exception
000244 000246 .WORD 246
000246 000002 RTI ;No action taken
044000 . = TEMP ;Restore location counter
PALX 222 04/24/75 12:00:45 PAGE 7
HALHED PAL[HAL,HE] PAGE 3 DEFS -- standard definitions for HAL runtime routines
;routine calling and defining macros.
;Coded by RHT 9/74.
;This should be used at the start of routines which reference
; parameters off the RF stack. It gives the parameters
; symbolic names for clarity of coding.
;For example,
;
; ROUTINE FOO,<A,B>
;
;Goes to
;
; A==4
; B==2
;FOO:
.MACRO ROUTINE ID,ARGS
.IFNB ARGS
NNNN==0
.IRP II,<ARGS> ;Raise NNNN to twice the number of args.
NNNN==NNNN+2
.ENDM
.IRP II,<ARGS> ;Assign each arg NNNN and decrease same.
.IFDF II
.IF1
.ERROR Multiple definition for II
.ENDC
.IFF
II == NNNN
NNNN == NNNN-2
.ENDC
.ENDM
.ENDC
ID:
.ENDM
;This is useful in calling rountines which reference parameters off
; the RF stack. It sets up the stack properly, but does not
; save R0 or R1.
.MACRO CALL ID,ARGS
MOV RF,-(SP) ;Save RF
NNNN == 6400 ;This is a MARK 0 instruction
.IFNB ARGS
.IRP II,<ARGS>
MOV II,-(SP);Push an argument
NNNN == NNNN+1 ;Make NNNN the next MARK instruction.
.ENDM
.ENDC
PALX 222 04/24/75 12:00:45 PAGE 8
HALHED PAL[HAL,HE] PAGE 3.1 DEFS -- standard definitions for HAL runtime routines
MOV #NNNN,-(SP) ;Push the mark instruction.
MOV SP,RF ;Set up the display in RF.
JSR PC,ID ;Call the routine
.ENDM
;This macro is a temporary(ha,ha) method of defining floating point
;constants. LABIL is the constant name and MSB and LSB it's two
;16bit octal parts.
.MACRO FP LABIL,MSB,LSB
.MACRO LABIL
.WORD MSB,LSB
.ENDM
.ENDM
;Macros to tell value of variable during assembly
.MACRO TELL VAR
TELL2 VAR,\VAR
.ENDM
.MACRO TELL2 S,V
.PRINT /S = /
.PRINT /V
/
.ENDM
PALX 222 04/24/75 12:00:45 PAGE 9
HALHED PAL[HAL,HE] PAGE 4 DEFS -- standard definitions for HAL runtime routines
;macros for handling tables & blocks
.MACRO XX SYM ;Just gives SYM the next number.
.IFDF SYM
.IF1
.ERROR You are using SYM in two ways!!!
.ENDC
.ENDC
SYM == II
II == II+2
.ENDM
.MACRO PUTLOC ADR,VAL
II==.
.= ADR
VAL
.=II
.ENDM
.MACRO TT INX,VAL
.=II+INX
VAL
.ENDM
;SMALL BLOCK DESCRIPTOR FORMAT
000000 II == 0
XX IDFLAG ;ACTUALLY A BYTE -- GETS PUT IN ID PART OF TAG WORD
.IFDF IDFLAG
.IF1
.ERROR You are using IDFLAG in two ways!!!
.ENDC
.ENDC
000000 IDFLAG == II
000002 II == II+2
XX MAPRTN ;ROUTINE TO BE CALLED ON MARK
.IFDF MAPRTN
.IF1
.ERROR You are using MAPRTN in two ways!!!
.ENDC
.ENDC
000002 MAPRTN == II
000004 II == II+2
XX SIZE ;How many words for a value cell in this type block.
.IFDF SIZE
.IF1
.ERROR You are using SIZE in two ways!!!
.ENDC
.ENDC
PALX 222 04/24/75 12:00:45 PAGE 10
HALHED PAL[HAL,HE] PAGE 4.1 DEFS -- standard definitions for HAL runtime routines
000004 SIZE == II
000006 II == II+2
XX NPERB ;NUMBER OF BLOCKS PER BUFFER
.IFDF NPERB
.IF1
.ERROR You are using NPERB in two ways!!!
.ENDC
.ENDC
000006 NPERB == II
000010 II == II+2
XX GCFG ;SET IF THIS IS NOT A COLLECTABLE AREA
.IFDF GCFG
.IF1
.ERROR You are using GCFG in two ways!!!
.ENDC
.ENDC
000010 GCFG == II
000012 II == II+2
XX NMIN ;MIN NUMBER OF FREE BLOCKS TO BE RETURNED BY GC
.IFDF NMIN
.IF1
.ERROR You are using NMIN in two ways!!!
.ENDC
.ENDC
000012 NMIN == II
000014 II == II+2
XX NPCT ;MIN % OF FREE BLOCKS TO BE RETURNED BY GC
.IFDF NPCT
.IF1
.ERROR You are using NPCT in two ways!!!
.ENDC
.ENDC
000014 NPCT == II
000016 II == II+2
XX NXTSID ;NEXT BLOCK ON ID CHAIN
.IFDF NXTSID
.IF1
.ERROR You are using NXTSID in two ways!!!
.ENDC
.ENDC
000016 NXTSID == II
000020 II == II+2
XX FFREE ;FREE LIST
.IFDF FFREE
.IF1
.ERROR You are using FFREE in two ways!!!
.ENDC
.ENDC
000020 FFREE == II
PALX 222 04/24/75 12:00:45 PAGE 11
HALHED PAL[HAL,HE] PAGE 4.2 DEFS -- standard definitions for HAL runtime routines
000022 II == II+2
XX FSTBUF ;OLDEST BUFFER
.IFDF FSTBUF
.IF1
.ERROR You are using FSTBUF in two ways!!!
.ENDC
.ENDC
000022 FSTBUF == II
000024 II == II+2
XX LSTBUF ;NEWEST BUFFER
.IFDF LSTBUF
.IF1
.ERROR You are using LSTBUF in two ways!!!
.ENDC
.ENDC
000024 LSTBUF == II
000026 II == II+2
XX NALLOC ;NUMBER ALLOCATED
.IFDF NALLOC
.IF1
.ERROR You are using NALLOC in two ways!!!
.ENDC
.ENDC
000026 NALLOC == II
000030 II == II+2
XX NFREE ;NUMBER FREE
.IFDF NFREE
.IF1
.ERROR You are using NFREE in two ways!!!
.ENDC
.ENDC
000030 NFREE == II
000032 II == II+2
000032 SPCHDR == II
;; EACH BUFFER
000000 II == 0
XX NXTBUF ;NEXT BUFFER
.IFDF NXTBUF
.IF1
.ERROR You are using NXTBUF in two ways!!!
.ENDC
.ENDC
000000 NXTBUF == II
000002 II == II+2
XX PRVBUF ;PREVIOUS BUFFER
.IFDF PRVBUF
.IF1
.ERROR You are using PRVBUF in two ways!!!
PALX 222 04/24/75 12:00:45 PAGE 12
HALHED PAL[HAL,HE] PAGE 4.3 DEFS -- standard definitions for HAL runtime routines
.ENDC
.ENDC
000002 PRVBUF == II
000004 II == II+2
XX LSTBLK ;ADDRESS OF LAST BLOCK IN THIS BUFFER
.IFDF LSTBLK
.IF1
.ERROR You are using LSTBLK in two ways!!!
.ENDC
.ENDC
000004 LSTBLK == II
000006 II == II+2
XX FSTBLK ;POINTS AT FIRST LOCN
.IFDF FSTBLK
.IF1
.ERROR You are using FSTBLK in two ways!!!
.ENDC
.ENDC
000006 FSTBLK == II
000010 II == II+2
000010 BUFHDR == II
;; EACH BLOCK
000000 II == 0
177777 TAG == -1 ;≠0 MEANS INUSE (USED IN GC)
177776 TAGID == -2 ;USED TO HOLD AN "ID" FOR THIS RECORD
XX WORD0 ;FIRST DATA WORD
.IFDF WORD0
.IF1
.ERROR You are using WORD0 in two ways!!!
.ENDC
.ENDC
000000 WORD0 == II
000002 II == II+2
;;GC METHODS
000000 II == 0
XX METH ;ROUTINE TO CALL
.IFDF METH
.IF1
.ERROR You are using METH in two ways!!!
.ENDC
.ENDC
000000 METH == II
000002 II == II+2
XX NXTMTH ;NEXT ON CHAIN
.IFDF NXTMTH
.IF1
.ERROR You are using NXTMTH in two ways!!!
PALX 222 04/24/75 12:00:45 PAGE 13
HALHED PAL[HAL,HE] PAGE 4.4 DEFS -- standard definitions for HAL runtime routines
.ENDC
.ENDC
000002 NXTMTH == II
000004 II == II+2
.MACRO MMETH ROUT
ROUT
0
.ENDM
;;SPECIAL SPACES
.IF2
000000 SIDHED == SIDCHN ;SO AUTOMATIC LINKAGE WORKS
.ENDC
000000 SIDCNT == 0;
000000 SIDCHN == 0;
.MACRO DEFSPC ID,MMRT,SZ,NPB,GCF,NMN,NPC
.IFNDF ID
SIDCNT==SIDCNT+1
ID==SIDCNT
.ENDC
II==.
.BLKW SPCHDR/2
TT IDFLAG,ID
TT MAPRTN,MMRT
TT SIZE,SZ
TT NPERB,NPB
TT GCFG,GCF
TT NMIN,NMN
TT NPCT,NPC
TT NXTSID,SIDCHN
TT FFREE,0
TT FSTBUF,0
TT LSTBUF,0
TT NALLOC,0
TT NFREE,0
.=II+SPCHDR
SIDCHN == II
.IF2
.IFGE MAXIDF-ID
II==.
.=SIDTBL+<ID*2>
SIDCHN
.=II
.ENDC
.ENDC
.ENDM
PALX 222 04/24/75 12:00:45 PAGE 14
HALHED PAL[HAL,HE] PAGE 4.5 DEFS -- standard definitions for HAL runtime routines
000030 MAXIDF == 30 ;MAX INDEX INTO SIDTBL
PALX 222 04/24/75 12:00:45 PAGE 15
HALHED PAL[HAL,HE] PAGE 5 DEFS -- standard definitions for HAL runtime routines
;Graph structure definitions
;RHT 9/74
;CELL LINKS
000000 II==0
XX DATUM
.IFDF DATUM
.IF1
.ERROR You are using DATUM in two ways!!!
.ENDC
.ENDC
000000 DATUM == II
000002 II == II+2
XX LINKF
.IFDF LINKF
.IF1
.ERROR You are using LINKF in two ways!!!
.ENDC
.ENDC
000002 LINKF == II
000004 II == II+2
XX LINKB
.IFDF LINKB
.IF1
.ERROR You are using LINKB in two ways!!!
.ENDC
.ENDC
000004 LINKB == II
000006 II == II+2
;GRAPH NODES
000000 II==0
XX NXTGN ;CHAIN OF ALL GNODES IN THE WORLD
.IFDF NXTGN
.IF1
.ERROR You are using NXTGN in two ways!!!
.ENDC
.ENDC
000000 NXTGN == II
000002 II == II+2
XX PRVGN
.IFDF PRVGN
.IF1
.ERROR You are using PRVGN in two ways!!!
.ENDC
.ENDC
000002 PRVGN == II
000004 II == II+2
XX INVMRK ;USED AS FLAG
PALX 222 04/24/75 12:00:45 PAGE 16
HALHED PAL[HAL,HE] PAGE 5.1 DEFS -- standard definitions for HAL runtime routines
.IFDF INVMRK
.IF1
.ERROR You are using INVMRK in two ways!!!
.ENDC
.ENDC
000004 INVMRK == II
000006 II == II+2
XX GNVAL ;POINTER AT VALUE
.IFDF GNVAL
.IF1
.ERROR You are using GNVAL in two ways!!!
.ENDC
.ENDC
000006 GNVAL == II
000010 II == II+2
XX GNDEPS ;DEPENDENT GRAPH NODES
.IFDF GNDEPS
.IF1
.ERROR You are using GNDEPS in two ways!!!
.ENDC
.ENDC
000010 GNDEPS == II
000012 II == II+2
XX GNCLCS ;CALCULATOR LIST (DBL LINKED)
.IFDF GNCLCS
.IF1
.ERROR You are using GNCLCS in two ways!!!
.ENDC
.ENDC
000012 GNCLCS == II
000014 II == II+2
XX GNCHGS ;CHANGE LIST
.IFDF GNCHGS
.IF1
.ERROR You are using GNCHGS in two ways!!!
.ENDC
.ENDC
000014 GNCHGS == II
000016 II == II+2
;CALCULATOR CELL
000000 II==0
XX NXTCLC ;LIST LINK
.IFDF NXTCLC
.IF1
.ERROR You are using NXTCLC in two ways!!!
.ENDC
.ENDC
000000 NXTCLC == II
PALX 222 04/24/75 12:00:45 PAGE 17
HALHED PAL[HAL,HE] PAGE 5.2 DEFS -- standard definitions for HAL runtime routines
000002 II == II+2
XX NEEDED ;LIST OF NEEDED NODES
.IFDF NEEDED
.IF1
.ERROR You are using NEEDED in two ways!!!
.ENDC
.ENDC
000002 NEEDED == II
000004 II == II+2
XX FORM ;SOME SORT OF CODE TO EVAL
.IFDF FORM
.IF1
.ERROR You are using FORM in two ways!!!
.ENDC
.ENDC
000004 FORM == II
000006 II == II+2
;CHANGER CELL
000000 II==0
XX NXTCHG
.IFDF NXTCHG
.IF1
.ERROR You are using NXTCHG in two ways!!!
.ENDC
.ENDC
000000 NXTCHG == II
000002 II == II+2
XX CHGCOD
.IFDF CHGCOD
.IF1
.ERROR You are using CHGCOD in two ways!!!
.ENDC
.ENDC
000002 CHGCOD == II
000004 II == II+2
PALX 222 04/24/75 12:00:45 PAGE 18
INTOPS PAL[HAL,HE] PAGE 2.1 DEFS -- standard definitions for HAL runtime routines
.INSRT INTOPS.PAL[HAL,HE]
PALX 222 04/24/75 12:00:45 PAGE 19
INTOPS PAL[HAL,HE] PAGE 1 DEFS -- standard definitions for HAL runtime routines
COMMENT ⊗ VALID 00002 PAGES
C REC PAGE DESCRIPTION
C00001 00001
C00002 00002 II == 0 Start of interpreter jump table
C00005 ENDMK
C⊗;
PALX 222 04/24/75 12:00:45 PAGE 20
INTOPS PAL[HAL,HE] PAGE 2 DEFS -- standard definitions for HAL runtime routines
000000 II == 0 ;Start of interpreter jump table
;Motion control
;PREPMOVE
;STARTMOVE
;Variable declaration
MAKEOP (XVARIABLE,VARIABLE);o,a ;Put a ptr to a at offset o, current level.
XX (XVARIABLE
.IFDF (XVARIABLE
.IF1
.ERROR You are using (XVARIABLE in two ways!!!
.ENDC
.ENDC
(XVARIABLE == II
000002 II == II+2
;Stack operations
MAKEOP XGTVAL,GTVAL;a ;Push value of arg (level-offset pair).
XX XGTVAL
.IFDF XGTVAL
.IF1
.ERROR You are using XGTVAL in two ways!!!
.ENDC
.ENDC
000002 XGTVAL == II
000004 II == II+2
MAKEOP XCHNGE,CHNGE;a ;Pop value into arg (level-offset pair).
XX XCHNGE
.IFDF XCHNGE
.IF1
.ERROR You are using XCHNGE in two ways!!!
.ENDC
.ENDC
000004 XCHNGE == II
000006 II == II+2
MAKEOP XPUSH, PUSH ;a ;Push arg directly (as a ptr) onto stack. For cnstnts.
XX XPUSH
.IFDF XPUSH
.IF1
.ERROR You are using XPUSH in two ways!!!
.ENDC
.ENDC
000006 XPUSH == II
000010 II == II+2
MAKEOP XPOP, POP ;Pop stack.
XX XPOP
.IFDF XPOP
.IF1
.ERROR You are using XPOP in two ways!!!
PALX 222 04/24/75 12:00:45 PAGE 21
INTOPS PAL[HAL,HE] PAGE 2.1 DEFS -- standard definitions for HAL runtime routines
.ENDC
.ENDC
000010 XPOP == II
000012 II == II+2
MAKEOP XCOPY, COPY ;n ;Copy n'th down to top of stack.
XX XCOPY
.IFDF XCOPY
.IF1
.ERROR You are using XCOPY in two ways!!!
.ENDC
.ENDC
000012 XCOPY == II
000014 II == II+2
MAKEOP XREPLAC,REPLAC;n;Replace n'th down with top (which pop)
XX XREPLAC
.IFDF XREPLAC
.IF1
.ERROR You are using XREPLAC in two ways!!!
.ENDC
.ENDC
000014 XREPLAC == II
000016 II == II+2
MAKEOP XFLUSH,FLUSH ;Flush the entire stack.
XX XFLUSH
.IFDF XFLUSH
.IF1
.ERROR You are using XFLUSH in two ways!!!
.ENDC
.ENDC
000016 XFLUSH == II
000020 II == II+2
;Flow of control
MAKEOP XJUMP, JUMP ;a ;Jump to address
XX XJUMP
.IFDF XJUMP
.IF1
.ERROR You are using XJUMP in two ways!!!
.ENDC
.ENDC
000020 XJUMP == II
000022 II == II+2
MAKEOP XJUMPZ,JUMPZ;a ;Jump to address only if top zero (which pop)
XX XJUMPZ
.IFDF XJUMPZ
.IF1
.ERROR You are using XJUMPZ in two ways!!!
.ENDC
.ENDC
PALX 222 04/24/75 12:00:45 PAGE 22
INTOPS PAL[HAL,HE] PAGE 2.2 DEFS -- standard definitions for HAL runtime routines
000022 XJUMPZ == II
000024 II == II+2
MAKEOP XTERMINATE,TERMINATE ;Terminate this interpreter
XX XTERMINATE
.IFDF XTERMINATE
.IF1
.ERROR You are using XTERMINATE in two ways!!!
.ENDC
.ENDC
000024 XTERMINATE == II
000026 II == II+2
MAKEOP XPROC, PROC;d,al;Call a procedure at d, with arg list al.
XX XPROC
.IFDF XPROC
.IF1
.ERROR You are using XPROC in two ways!!!
.ENDC
.ENDC
000026 XPROC == II
000030 II == II+2
MAKEOP XRETURN,RETURN ;Return from procedure
XX XRETURN
.IFDF XRETURN
.IF1
.ERROR You are using XRETURN in two ways!!!
.ENDC
.ENDC
000030 XRETURN == II
000032 II == II+2
MAKEOP XSPROUT,SPROUT;d;Sprout an interpreter at d.
XX XSPROUT
.IFDF XSPROUT
.IF1
.ERROR You are using XSPROUT in two ways!!!
.ENDC
.ENDC
000032 XSPROUT == II
000034 II == II+2
MAKEOP XFORCHK,FORCHK;d;Do a FOR-loop check, and fail to location d.
XX XFORCHK
.IFDF XFORCHK
.IF1
.ERROR You are using XFORCHK in two ways!!!
.ENDC
.ENDC
000034 XFORCHK == II
000036 II == II+2
;Arithmetic
PALX 222 04/24/75 12:00:45 PAGE 23
INTOPS PAL[HAL,HE] PAGE 2.3 DEFS -- standard definitions for HAL runtime routines
MAKEOP XSADD, SADD ;S+S: Add top two elts, pop, pop, push answer
XX XSADD
.IFDF XSADD
.IF1
.ERROR You are using XSADD in two ways!!!
.ENDC
.ENDC
000036 XSADD == II
000040 II == II+2
MAKEOP XSSUB, SSUB ;S-S: Sub top two elts, pop, pop, push answer
XX XSSUB
.IFDF XSSUB
.IF1
.ERROR You are using XSSUB in two ways!!!
.ENDC
.ENDC
000040 XSSUB == II
000042 II == II+2
MAKEOP XSMUL, SMUL ;S*S: Mul top two elts, pop, pop, push answer
XX XSMUL
.IFDF XSMUL
.IF1
.ERROR You are using XSMUL in two ways!!!
.ENDC
.ENDC
000042 XSMUL == II
000044 II == II+2
MAKEOP XSDIV, SDIV ;S/S: Div top two elts, pop, pop, push answer
XX XSDIV
.IFDF XSDIV
.IF1
.ERROR You are using XSDIV in two ways!!!
.ENDC
.ENDC
000044 XSDIV == II
000046 II == II+2
MAKEOP XSNEG, SNEG ;-S: Negate top elt, pop, push answer
XX XSNEG
.IFDF XSNEG
.IF1
.ERROR You are using XSNEG in two ways!!!
.ENDC
.ENDC
000046 XSNEG == II
000050 II == II+2
MAKEOP XVMAG, VMAG ;Scalar ← norm of vector
XX XVMAG
.IFDF XVMAG
.IF1
PALX 222 04/24/75 12:00:45 PAGE 24
INTOPS PAL[HAL,HE] PAGE 2.4 DEFS -- standard definitions for HAL runtime routines
.ERROR You are using XVMAG in two ways!!!
.ENDC
.ENDC
000050 XVMAG == II
000052 II == II+2
MAKEOP XSVMUL,SVMUL ;Vector ← scalar * vector
XX XSVMUL
.IFDF XSVMUL
.IF1
.ERROR You are using XSVMUL in two ways!!!
.ENDC
.ENDC
000052 XSVMUL == II
000054 II == II+2
MAKEOP XVDOT, VDOT ;S ← vector dot vector
XX XVDOT
.IFDF XVDOT
.IF1
.ERROR You are using XVDOT in two ways!!!
.ENDC
.ENDC
000054 XVDOT == II
000056 II == II+2
MAKEOP XPVDOT,PVDOT ;S ← vector dot vector
XX XPVDOT
.IFDF XPVDOT
.IF1
.ERROR You are using XPVDOT in two ways!!!
.ENDC
.ENDC
000056 XPVDOT == II
000060 II == II+2
MAKEOP XVMAKE,VMAKE ;V ← vector(scalar,scalar,scalar)
XX XVMAKE
.IFDF XVMAKE
.IF1
.ERROR You are using XVMAKE in two ways!!!
.ENDC
.ENDC
000060 XVMAKE == II
000062 II == II+2
MAKEOP XVADD, VADD ;V ← vector + vector
XX XVADD
.IFDF XVADD
.IF1
.ERROR You are using XVADD in two ways!!!
.ENDC
.ENDC
000062 XVADD == II
PALX 222 04/24/75 12:00:45 PAGE 25
INTOPS PAL[HAL,HE] PAGE 2.5 DEFS -- standard definitions for HAL runtime routines
000064 II == II+2
;UNITV remove ;Vector ← vector / its norm
;CROSV remove ;Vector ← vector cross vector
MAKEOP XTVMUL,TVMUL ;Vector ← trans * vector
XX XTVMUL
.IFDF XTVMUL
.IF1
.ERROR You are using XTVMUL in two ways!!!
.ENDC
.ENDC
000064 XTVMUL == II
000066 II == II+2
;FTOF
MAKEOP XTMAKE,TMAKE ;Trans ← trans(rot,vector)
XX XTMAKE
.IFDF XTMAKE
.IF1
.ERROR You are using XTMAKE in two ways!!!
.ENDC
.ENDC
000066 XTMAKE == II
000070 II == II+2
;TTMUL
;TINV
PALX 222 04/24/75 12:00:45 PAGE 26
COMP PAL[HAL,HE] PAGE 2.1 DEFS -- standard definitions for HAL runtime routines
;The interpreter operation table
;.INSRT COM0.PAL[H,RF]
;.INSRT COM1.PAL[H,RF]
;.INSRT COM2.PAL[H,RF]
;.INSRT COM3.PAL[H,RF]
.INSRT COMT.PAL[H,RF]
PALX 222 04/24/75 12:00:45 PAGE 27
COMT PAL[H,RF] PAGE 1 DEFS -- standard definitions for HAL runtime routines
COMMENT ⊗ VALID 00002 PAGES
C REC PAGE DESCRIPTION
C00001 00001
C00002 00002 Small test of interpreter sprouts
C00003 ENDMK
C⊗;
PALX 222 04/24/75 12:00:45 PAGE 28
COMT PAL[H,RF] PAGE 2 DEFS -- standard definitions for HAL runtime routines
;Small test of interpreter sprouts
L10:
044000 000006 XPUSH
044002 000000 0
044004 000032 XSPROUT
044006 044020 L1
044010 044036 L2
044012 044044 L3
044014 000000 0
044016 000024 XTERMINATE
044020 000006 L1: XPUSH
044022 000001 1
044024 000032 XSPROUT
044026 044052 L4
044030 044060 L5
044032 000000 0
044034 000024 XTERMINATE
044036 000006 L2: XPUSH
044040 000002 2
044042 000024 XTERMINATE
044044 000006 L3: XPUSH
044046 000003 3
044050 000024 XTERMINATE
044052 000006 L4: XPUSH
044054 000004 4
044056 000024 XTERMINATE
044060 000006 L5: XPUSH
044062 000005 5
044064 000024 XTERMINATE
PALX 222 04/24/75 12:00:45 PAGE 29
COMP PAL[HAL,HE] PAGE 2.2 DEFS -- standard definitions for HAL runtime routines
000001 .END
PALX 222 04/24/75 12:00:45 PAGE 30
COMP PAL[HAL,HE] PAGE 2 ***SYMBOL TABLE***
AC0 000000RH MARK2 006402H XJUMP 000020H
AC1 000001RH MARK3 006403H XJUMPZ 000022H
AC2 000002RH MARK4 006404H XPOP 000010H
AC3 000003RH MARK5 006405H XPROC 000026H
AC4 000004RH MAXIDF 000030H XPUSH 000006H
AC5 000005RH METH 000000H XPVDOT 000056H
BUFHDR 000010H NALLOC 000026H XREPLA 000014H
CHGCOD 000002H NEEDED 000002H XRETUR 000030H
CLKCNT 172544 NFREE 000030H XSADD 000036H
CLKS 172540 NMIN 000012H XSDIV 000044H
CLKSET 172542 NPCT 000014H XSMUL 000042H
CLKTRP 000104H NPERB 000006H XSNEG 000046H
DATUM 000000H NXTBUF 000000H XSPROU 000032H
ERRTRP 000004H NXTCHG 000000H XSSUB 000040H
FFREE 000020H NXTCLC 000000H XSVMUL 000052H
FLOAT 000001H NXTGN 000000H XTERMI 000024H
FORM 000004H NXTMTH 000002H XTMAKE 000066H
FSTBLK 000006H NXTSID 000016H XTVMUL 000064H
FSTBUF 000022H OBUF 000160H XVADD 000062H
GCFG 000010H PC 000007R XVDOT 000054H
GNCHGS 000014H PRVBUF 000002H XVMAG 000050H
GNCLCS 000012H PRVGN 000002H XVMAKE 000060H
GNDEPS 000010H PS 177776
GNVAL 000006H R0 000000R
HCOR 077776 R1 000001R
IBUF 000150H R2 000002R
IDFLAG 000000H R3 000003R
II 000070H R4 000004R
ILGINS 000010H R5 000005R
INVMRK 000004H RF 000005RH
KBIR 177562 RUG 050000
KBIS 177560 SIDCHN 000000H
KBOR 177566 SIDCNT 000000H
KBOS 177564 SIDHED 000000H
L1 044020 SIZE 000004H
L10 044000 SP 000006R
L2 044036 SPCHDR 000032H
L3 044044 STRT11 000500
L4 044052 TAG 177777H
L5 044060 TAGID 177776H
LINKB 000004H TEMP 044000H
LINKF 000002H WORD0 000000H
LSTBLK 000004H XCHNGE 000004H
LSTBUF 000024H XCOPY 000012H
MAPRTN 000002H XFLUSH 000016H
MARK0 006400H XFORCH 000034H
MARK1 006401H XGTVAL 000002H
PALX 222 04/24/75 12:00:45 PAGE 31
COMP PAL[HAL,HE] PAGE 2 ***SYMBOL TABLE***
1 ERRORS DETECTED
10 SECONDS RUN-TIME